home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-ietf-uri-url-00.txt < prev    next >
Text File  |  1993-04-29  |  45KB  |  997 lines

  1.  
  2.  
  3.  
  4. Uniform Resource Locators                               Tim Berners-Lee
  5. INTERNET DRAFT                                                     CERN
  6. IETF URL Working Group                                    30 March 1993
  7. Expires:  September 30, 1993
  8.  
  9.  
  10.                           Uniform Resource Locators
  11.  
  12.  
  13.      Status of this memo
  14.  
  15.             This document is an Internet Draft.  Internet Drafts are
  16.           working documents of the Internet Engineering Task Force
  17.           (IETF), its Areas, and its Working Groups.  Note that other
  18.           groups may also distribute working documents as Internet
  19.           Drafts.
  20.             Internet Drafts are working documents valid for a maximum of
  21.           six months.  Internet Drafts may be updated, replaced, or
  22.           obsoleted by other documents at any time.  It is not
  23.           appropriate to use Internet Drafts as reference material or to
  24.           cite them other than as a "working draft" or "work in
  25.           progress".
  26.             Distribution of this document is unlimited.  Please send
  27.           comments to the author as timbl@info.cern.ch. or to the
  28.           discussion list  ietf-url@merit.edu.
  29.  
  30.      Abstract
  31.  
  32.             Many protocols and systems for document search and retrieval
  33.           are currently in use, and many more protocols or refinements
  34.           of existing protocols are to be expected in a field whose
  35.           expansion is explosive.
  36.             These systems are aiming to achieve global search and
  37.           readership of documents across differing computing platforms,
  38.           and despite a plethora of protocols and data formats.   As
  39.           protocols evolve, gateways can allow global access to remain
  40.           possible. As data formats evolve, format conversion programs
  41.           can preserve global access.  There is one area, however, in
  42.           which it is impractical to make conversions, and that is in
  43.           the names used to identify objects.  This is because names of
  44.           objects are passed on in so many ways, from the backs of
  45.           envelopes to hypertext objects, and may have a long life.
  46.             This paper discusses the requirements on a universal naming
  47.           syntax which can be used to refer to objects available using
  48.           existing protocols, and may be extended with technology.  It
  49.           makes a recommendation for a generic syntax, and for specific
  50.           forms for "Uniform Resource Locators" (URLs) of objects
  51.           accessible using existing Internet protocols.
  52.  
  53. Uniform Resource Locators                                   Berners-Lee
  54.  
  55.  
  56.  
  57.      Terms
  58.  
  59.             The objects on the network which are to be named include
  60.           typically objects which can be retrieved, and objects which
  61.           can be searched.   There is a great variety of other objects
  62.           which may support other operations.  We imply nothing about
  63.           the contents of objects in this document.  Whereas human-
  64.           readable documents are currently the center of interest of the
  65.           field, we envisage all aspects discussed in this paper
  66.           applying to generalised objects when systems to handle them
  67.           become available. The "object" is the unit of reference and
  68.           need not correspond to any unit of storage.  We refer to
  69.           objects which can be searched as "indexes".  We emphasise that
  70.           this is the abstract view of the client, and these objects
  71.           need not correspond to physical files on computers. We refer
  72.           to the person who does the retrieval or searching as the user.
  73.             We use the terms "name" for a string of characters
  74.           describing a document,  which allows it (and it alone) to be
  75.           found. The term "address" is reserved for an string which
  76.           specifies a more or less physical location.  The term
  77.           "locator" refers to a URL as here defined.
  78.  
  79.      Requirements
  80.  
  81.             This section discusses requirements for URLs, as an
  82.           introduction of and background for the Recommendations
  83.           section.
  84.  
  85.         Uses of names and addresses
  86.  
  87.             A name allows a user, with the help of a "client" program,
  88.           to retrieve or operate on objects via a "server" program.  A
  89.           name may be passed for example:
  90.                   - In communication of any form between two people, to
  91.                     refer to a document, or part of a document;
  92.                   - As part of the description of a link associated with
  93.                     a hypertext document;
  94.                   - As part of the result of searching an index.
  95.             Some typical requirements on a name which are met to a
  96.           varying degree by various schemes are for example that the
  97.           name is
  98.             Persistent     A given name will remain valid as long as it
  99.                            is needed;
  100.             Extensible     A given naming syntax will remain valid
  101.                            through the introduction of new protocols and
  102.                            directory technologies;
  103.             Resolvable     A name will contain enough information to
  104.                            allow the document or index to which it
  105.                            refers to be accessed, perhaps via resolution
  106.                            into an intermediate, more physical, name.
  107.  
  108.  
  109.  
  110. Internet Draft                     2                         March 1993
  111.  
  112. Uniform Resource Locators                                   Berners-Lee
  113.  
  114.  
  115.             Unique         The fact that two names are identical implies
  116.                            that the objects named are the same in some
  117.                            way
  118.             The syntax discussed is the syntax of one name, be it a
  119.           lasting name or a physical address.  When a directory server
  120.           or hypertext link contains a set of alternative names, then
  121.           that is beyond the scope of this syntax.  Similarly, a syntax
  122.           for describing a compound object is outside the scope of this
  123.           syntax.  The specific locator name spaces (defined under the
  124.           umbrella of the general syntax) each meet the requirements
  125.           above to a greater or lesser extent.
  126.  
  127.         Current practice
  128.  
  129.             Current protocols use many different standards for names.
  130.           For some protocols, such as ISO-10163 Search and Retrieve
  131.           protocol[16], the names returned in a search are only valid
  132.           during the session. For others, such as FTP[9], they are
  133.           lasting names which may be used for object retrieval at a
  134.           later time.  Typically, however, they are not long-lasting
  135.           names which are independent of the location of the object.
  136.           Such names may be provided using directory servers such as
  137.           x.500.  They will refer to the registration, however formal or
  138.           informal, of a object with a particular organisation or
  139.           person.  Both hypertext and  manual references rely on long-
  140.           lasting names.
  141.             Current names are basically location specifiers (addresses).
  142.           These may be known as Uniform Resource Locators (URLs). They
  143.           give the necessary parts of an address for a reader to access
  144.           an information provider using the given protocol, and ask for
  145.           the object required. Examples of names used by various
  146.           protocols include
  147.  
  148. File Transfer Protocol (Postel 1985):
  149.                          Host name or IP-address
  150.                               [IP port]
  151.                          [user name, password]
  152.                          Filename
  153.  
  154. W.A.I.S. (Kahle 1990)         Host name or IP-address
  155.                          [IP port]
  156.                          database name
  157.                          local document id
  158.  
  159. Gopher (Alberti 1991)         Host name or IP-address
  160.                          [IP port]
  161.                          database name
  162.                          selector string
  163.  
  164. HTTP (Berners-Lee 1991)       Host name or IP-address
  165.                          [IP port]
  166.                          local object id
  167.  
  168.  
  169. Internet Draft                     3                         March 1993
  170.  
  171. Uniform Resource Locators                                   Berners-Lee
  172.  
  173.  
  174.  
  175. NNTP (Kantor 1986) group Group name
  176.  
  177. NNTP article             Host name
  178.                          unique message identifier
  179.  
  180. x.500 distinguished name Country
  181.                          Organisation
  182.                          Organisational unit
  183.                          Person
  184.                          Local object identifier
  185.  
  186.  
  187.             Other systems with their own naming schemes include BITNET
  188.           "LISTSERV" application, FTAM file retrieval, SQLnetTM remote
  189.           database search, proprietary  distributed file systems, etc.
  190.           Conventional syntax for writing these addresses involve
  191.           various forms of punctuation to separate these parts.  This
  192.           sometimes,  but not always, allows the naming scheme to be
  193.           deduced from the punctuation.  For example, a name of the form
  194.           xxx.yyy.zz.edu:/pub.aa.bb.cc  often implies anonymous FTP
  195.           access.  However, there is no well-defined algorithm for
  196.           parsing an arbitrary name, as there is no common syntax.
  197.  
  198.  
  199.         Expandability
  200.  
  201.  
  202.             There will necessarily be a phase during which lasting names
  203.           will become more  common, as the deployment of directory
  204.           services increases to the point where  every user has direct
  205.           or indirect access to one.  Even then, however, one can
  206.           envisage more than one competing directory system, and cases
  207.           in which physical  names are still required.  A directory
  208.           service takes a lasting name and reduces it  to a physical
  209.           address (or set of addresses) which, though less useful for
  210.           lasting reference, is the only way to actually retrieve the
  211.           object.
  212.  
  213.             An addressing syntax is required which will be able to
  214.           encompass existing  physical address spaces, and be extendible
  215.           to any future protocols.  This  requires that it contain an
  216.           identifier for the protocol in use. The format of the rest  of
  217.           the address will necessarily depend to a certain extent on the
  218.           protocol.
  219.  
  220.  
  221.         Relevance
  222.  
  223.             The life of a name is limited by any information contained
  224.           within it which may  become prematurely invalid. It is
  225.           therefore necessary to limit the contents of a name to the
  226.  
  227.  
  228. Internet Draft                     4                         March 1993
  229.  
  230. Uniform Resource Locators                                   Berners-Lee
  231.  
  232.  
  233.           information required for the operations above.  Other
  234.           extraneous information about the object (its size, data
  235.           format, authorisation details, etc.) may in general change
  236.           with time and should not be part of the name.
  237.             One might expect such information to be part of the "header"
  238.           of a object, and for protocols to allow the header information
  239.           to be retrieved independently of the objects themselves.
  240.             Any physical address may be subject to change with time:
  241.           hence we encourage the move to lasting names and directory
  242.           services.
  243.  
  244.         Uniqueness
  245.  
  246.             Clearly one requires uniqueness in the sense that one name
  247.           should refer to only one logical object. This is the case with
  248.           all the addressing schemes in use, whether they are directory
  249.           systems or physical addresses. (The internet addresses all
  250.           rely on the domain name (Mockapetris 1987) of the host to
  251.           achieve this).
  252.             However, given that names can be translated, many apparently
  253.           different names  may lead to the same object. Any object may
  254.           therefore be referred to by many  names. One needs to be able
  255.           to know whether two objects, retrieved through  different
  256.           paths, are in fact the same object.
  257.             It is suggested that each object have one "official" name.
  258.           This name could be stored in the object in some
  259.           representations, or stored in a database  accessible to the
  260.           server, for example.  Any references within that object
  261.           should be parsed in the context of the official name.  In the
  262.           presence of a  directory service, the official name will
  263.           normally be the registered name of the object. However, a name
  264.           in any scheme will do, so long as it is completely specified.
  265.           On systems which do not allow the name to be stored (such as
  266.           anonymous FTP archive sites), a possible ambiguity will always
  267.           exist as to whether two similarly named objects are in fact
  268.           the same.
  269.             Note that Internet newsgroup names are unique world-wide,
  270.           and news articles carry a unique message id.
  271.             In most other cases, however, there is no guarantee that
  272.           dereferencing a URL will work, or that if it does the object
  273.           it refers to will in fact be the object intended.  URLs such
  274.           as FTP addresses are transient in that files may be moved and
  275.           even replaced by different files of the same name.  This
  276.           disorganisation may be limited by good server management,  but
  277.           a naming scheme which is independent also of internet host
  278.           name is obviously preferable.
  279.  
  280.         Readability by people
  281.  
  282.              This requirement has been put forward by several people
  283.           (Clifford Lynch, Douglas Engelbart among others), and disputed
  284.           by others.  The author's view is that it will be a while
  285.  
  286.  
  287. Internet Draft                     5                         March 1993
  288.  
  289. Uniform Resource Locators                                   Berners-Lee
  290.  
  291.  
  292.           before technology and standardisation have reached the point
  293.           at which names and addresses will be hidden from human beings.
  294.           As long as they must be written on the backs of envelopes and
  295.           "cut and pasted" between workstation windows, there is a
  296.           strong need for names to be
  297.                   . Short
  298.                   . Composed of printable (preferably non-white)
  299.                     characters
  300.                   . To a certain extent, understadable by a human being.
  301.  
  302.  
  303.         Structure of names and addresses.
  304.  
  305.  
  306.             A physical address is required in order for
  307.  
  308.                   . The user's program to contact the server
  309.                   . The server to search and index,  retrieve a object,
  310.                     or look up the name;
  311.                   . The user's program to locate an individual position
  312.                     or element within a object.
  313.  
  314.             This suggests that a name be structured, such that the parts
  315.           necessary for these  three operations be separate and only
  316.           used by those system elements which need  those parts. This
  317.           corresponds to the basic principle of information hiding.  In
  318.           fact,  four parts are necessary, including the indicator of
  319.           the naming scheme to be used:
  320.  
  321.                   . The naming scheme: a registered identifier for the
  322.                     protocol.
  323.                   . The name of a suitable server. The format of this
  324.                     part must be well defined. It will depend on the
  325.                     lower-layer protocols in use.  Systems which use
  326.                     widely distributed information, such as x.500 and
  327.                     NNTP, do not need this part as each client generally
  328.                     contacts his nearest server (or a particular
  329.                     server).
  330.                   . Information to be passed to the server. This may be
  331.                     private to the server, as all names may be generated
  332.                     and used by the same server. The client should
  333.                     normally be transparent to this part of the name.
  334.                   . Information to be used by the application once the
  335.                     object has been retrieved.  This part is private to
  336.                     the application (or, more strictly, the data format)
  337.                     and so cannot be defined here.
  338.  
  339.             Both lasting names and physical addresses often share a
  340.           hierarchical structure. This follows often from the
  341.           organisation of the system. From the naming point of view, it
  342.           has the advantage that a reference in one object to another
  343.  
  344.  
  345.  
  346. Internet Draft                     6                         March 1993
  347.  
  348. Uniform Resource Locators                                   Berners-Lee
  349.  
  350.  
  351.           object need not include that part of the structure which is
  352.           common to both names.
  353.  
  354.         Choices
  355.  
  356.             The requirements above leave little room for choice save for
  357.           the order and punctuation of the elements of an address.  It
  358.           is only reasonable for the order of writing of the parts to be
  359.           consistently from left to right (or right to left) with
  360.           increasing specificity.  Punctuation schemes fall into two
  361.           categories (Huitema 1991): tagged schemes in which field are
  362.           given names, and fields which use special characters and field
  363.           order. The latter tend to be more compact schemes.
  364.  
  365.           protocol: aftp host: xxx.yyy.edu path:
  366.           /pub/doc/README
  367.  
  368.           PR=aftp; H=xx.yy.edu; PA=/pub/doc/README;
  369.  
  370.           PR:aftp/xx.yy.edu/pub/doc/README
  371.  
  372.           /aftp/xx.yy.edu/pub/doc/README
  373.  
  374.             Fig 1. Some alternative tagged and untagged representations
  375.  
  376.  
  377.             The choice of special symbols for punctuation tends to be a
  378.           matter of taste. It is easier to read  addresses whose symbols
  379.           correspond to those of one's favourite operating system.  A
  380.           variety of symbols is needed so that when a name is
  381.           abbreviated it is possible to tell which parts have been
  382.           omitted. The  recommendation below uses special characters in
  383.           order to achieve a compact name, and uses where possible
  384.           punctuation symbols established in the internet or unix
  385.           community.
  386.             The choice of escape character for introducing
  387.           representations of non-allowed characters also tends to be a
  388.           matter of taste. An ANSI standard exists in the C language,
  389.           using the back-slash character "\". The use of this character
  390.           on unix command lines, however, can be a problem as it is
  391.           interpreted by many shell programs, and would have itself to
  392.           be escaped.
  393.             The use of white space characters has been avoided  in URLs:
  394.           spaces are not legal characters.   This was done because of
  395.           the frequent introduction of extraneous white space when lines
  396.           are wrapped by systems such as mail, or sheer necessity of
  397.           narrow column width, and because of the  inter-conversion of
  398.           various forms of white space which occurs during character
  399.           code conversion and the transfer of text between applications.
  400.  
  401.  
  402.  
  403.  
  404.  
  405. Internet Draft                     7                         March 1993
  406.  
  407. Uniform Resource Locators                                   Berners-Lee
  408.  
  409.  
  410.  
  411.      Recommendations
  412.  
  413.             This section describes the syntax for "Uniform Resource
  414.           Locators" (URLs):  that is, basically physical addresses of
  415.           objects which are retrievable using protocols already deployed
  416.           on the net.  The generic syntax provides a framework for new
  417.           schemes for names to be resolved using as yet undefined
  418.           protocols.
  419.             The syntax is described in two parts. Firstly, the syntax
  420.           rules of a completely specified name are given;  secondly, the
  421.           rules under which parts of the name may be omitted in a well-
  422.           defined context.
  423.  
  424.         Full form
  425.  
  426.  
  427.             A complete URL consists of a naming scheme specifier
  428.           followed by a string whose format is a function of the naming
  429.           scheme. For locators of information on the internet, a common
  430.           syntax is used for the  IP address part. A BNF description of
  431.           the URL syntax is given in an a later section.  The components
  432.           are as follows.
  433.  
  434.         Anchor-id
  435.  
  436.             This represents a part of, fragment of, or a sub-function
  437.           within, an object or object. Its syntax and semantics are
  438.           defined by the application responsible for the object, or the
  439.           specification of the content type of the object. The only
  440.           definition here is of the allowed characters by which it may
  441.           be represented in a URL.
  442.             The anchor-id follows the URL of the whole object from which
  443.           it is separated by a hash sign (#).  If the anchor-id is void,
  444.           the hash sign may be omitted: A void anchor-id with or without
  445.           the hash sign means that the URL refers to the whole object.
  446.             While this hook is allowed for identification of fragments,
  447.           the question of addressing of parts of objects, or of the
  448.           grouping of objects and relationship between contined and
  449.           containing objects, is not addressed by this object.
  450.             This object does not address the question of objects which
  451.           are different versions of a "living" object, nor of expressing
  452.           the relationships between different versions and the living
  453.           object.
  454.  
  455.         Scheme
  456.  
  457.  
  458.             Within the URL of a object, the first element is the name of
  459.           the scheme, separated from the rest of the object by a colon.
  460.           The rest of the URL follows the colon in a format depending on
  461.           the scheme.
  462.  
  463.  
  464. Internet Draft                     8                         March 1993
  465.  
  466. Uniform Resource Locators                                   Berners-Lee
  467.  
  468.  
  469.  
  470.  
  471.         Internet protocol parts
  472.  
  473.  
  474.             Those schemes which refer to internet protocols have a
  475.           common syntax for the rest of the object name. This starts
  476.           with a double slash "//" to indicate its presence, and
  477.           continues until the following slash "/".  Within that section
  478.           are
  479.  
  480.                   . An optional user name, if this must be quoted to the
  481.                     server, followed by  a commercial at sign "@".  (Use
  482.                     of this field is discouraged. Provision  of encoding
  483.                     a password after the user name, delimited by a
  484.                     colon, could  be made but obviously is only useful
  485.                     when the password is public, in  which case it
  486.                     should not be necessary, so that is also
  487.                     discouraged.)
  488.                   . The internet domain name  of the host in RFC1037
  489.                     format (or, optionally  and less advisably, the IP
  490.                     address as a set of four decimal digits)
  491.                   . The port number, if it is not the default number for
  492.                     the protocol, is given in decimal notation after a
  493.                     colon.
  494.  
  495.  
  496.         Path
  497.  
  498.             The rest of the locator is known as the "path". It may
  499.           define details of how the client should communicate with the
  500.           server, including information to be passed transparently to
  501.           the server without any processing by the client.
  502.             The path is interpreted in a manner dependent on the
  503.           protocol being used. However, when it contains slashes, these
  504.           must imply a hierarchical structure.
  505.  
  506.         Partial form
  507.  
  508.             In a certain limited set of cases, generally within a
  509.           certain application, it may be useful to pass only a section
  510.           of the URL. Within a object whose URL is well defined, the URL
  511.           of another object may be given in abbreviated form, where
  512.           parts of the two URLs are the same. This allows objects within
  513.           a group to refer to each other without requiring the space for
  514.           a complete reference, and it incidentally allows the group of
  515.           objects  to be moved without changing any references.  This is
  516.           not discussed in detail here, it is only mentioned so that the
  517.           characters required by the technique be reserved for that
  518.           purpose.  It must be emphasised that when a reference is
  519.           passed in anything other than a well controlled context, the
  520.           full form must always be used.
  521.  
  522.  
  523. Internet Draft                     9                         March 1993
  524.  
  525. Uniform Resource Locators                                   Berners-Lee
  526.  
  527.  
  528.             The partial form relies on a property of the URL syntax that
  529.           certain characters ("/") and certain path elements ("..", ".")
  530.           have a significance reserved for representing a hierarchical
  531.           space, and must be recognised as such by both clients and
  532.           servers.
  533.             A partial form can be distinguished from a full form in that
  534.           a full form must have a colon and that colon must occur before
  535.           any slash characters.
  536.             The rules for the use of a partial name are:
  537.                   . If the scheme parts  are different, the whole
  538.                     absolute locator must be given. Otherwise, the
  539.                     scheme is omitted, and:
  540.                   . If the host and/or port parts are the different, the
  541.                     host, port name and all the rest of the locator must
  542.                     be given.
  543.                   . If the access and host parts are the same, then the
  544.                     path may be given in absolute (fully qualified) or
  545.                     relative form. Within the path:
  546.                   . If a leading slash is present, the path is absolute.
  547.                     Otherwise, a relative path is interpreted as
  548.                     follows:
  549.                   . The last part of the path of the context locator
  550.                     (anything following the rightmost slash) is removed,
  551.                     and the given partial URL appended in its place.
  552.                   . Within the result,  all occurrences of "/xxx/.."  or
  553.                     "/." are recursively removed, where xxx, ".." and
  554.                     "."  are complete path elements.
  555.  
  556.  
  557.         Mapping Local Names
  558.  
  559.             When a system uses a local addressing scheme, it is useful
  560.           to provide a mapping from local addresses into URLs so that
  561.           references to objects within the addressing scheme may be
  562.           referred to globally, and possibly accessed through gateway
  563.           servers.
  564.             Any mapping scheme may be defined provided it is
  565.           unambiguous, reversible, and provides valid URLs. It is
  566.           recommended that where hierarchical aspects to the local
  567.           naming scheme exist, they be mapped onto the hierarchical URL
  568.           path syntax in order to allow the partial form to be used.
  569.             The following escaping method is used for mapping WAIS, FTP
  570.           and Gopher addresses onto URLs. Where the local naming scheme
  571.           uses ASCII characters which are not allowed in the URL,  these
  572.           may be represented in the URL by a percent sign "%" followed
  573.           by two hexadecimal digits (0-9, A-F) giving the ASCII value
  574.           for that character. If non-ASCII characters are used, then a
  575.           similar escaping system should be used. Character codes other
  576.           than those allowed by the syntax shall not be used in a URL.
  577.             The same considerations apply to mapping local anchor
  578.           identifiers onto the anchorid part of a URL.
  579.  
  580.  
  581.  
  582. Internet Draft                     10                        March 1993
  583.  
  584. Uniform Resource Locators                                   Berners-Lee
  585.  
  586.  
  587.  
  588.      Specific Naming Schemes
  589.  
  590.             The mapping for some existing standard and experimental
  591.           protocols is outlined in the BNF syntax definition.  Notes on
  592.           particular protocols follow.
  593.  
  594.         HTTP
  595.  
  596.             The HTTP protocol specifies that the path is handled
  597.           transparently by those who handle URLs, except for the servers
  598.           which dereference them.   The path is passed by the client to
  599.           the server with any request, but is not otherwise understood
  600.           by the client.  The anchorid part is not sent with the
  601.           request.  The search part, if present, is sent.
  602.  
  603.         FTP
  604.  
  605.             The ftp: prefix indicates a file which is to be picked up
  606.           from the file system of the given host. The FTP protocol is
  607.           used. The port number if given gives the port of the FTP
  608.           server if not the FTP default. (A client may in practice use
  609.           local file access to retrieve objects which are available
  610.           though more efficient means such as local file open or NFS
  611.           mounting, where this is available and equivalent)
  612.             The syntax allows for the inclusion of a user name and even
  613.           a password for those systems which do not use the anonymous
  614.           FTP convention. The default, however, if no user or password
  615.           is supplied, will be to use that convention, viz. that the
  616.           user name is "anonymous" and the password the user's mail
  617.           address.
  618.             The adoption of a unix-style syntax involves the conversion
  619.           into non-unix local forms by either the client or server. Some
  620.           non-unix servers do this, but clients wishing to access sites
  621.           which do not have unix-style naming will need certain
  622.           algorithms to enable  other file systems to be identified and
  623.           treated.  Client software may also have to be flexible in
  624.           terms of the sequence of FTP commands used with different
  625.           varieties of server.  In view of a tendency for file systems
  626.           to look increasingly similar, it was felt that the URL
  627.           convention should not be weighed down by extra mechanisms for
  628.           identifying these cases.
  629.             The data format of a file can only, in the general FTP case,
  630.           be deduced from the name, normally the suffix of the name.
  631.           This is not standardised. The transfer mode (binary or text)
  632.           must in turn be deduced from the data format.  It is
  633.           recommended that conventions for suffixes of public archives
  634.           be established, but it outside the scope of this paper.
  635.  
  636.         Andrew File System
  637.  
  638.             The afs: prefix indicates a following afs cellname and path.
  639.  
  640.  
  641. Internet Draft                     11                        March 1993
  642.  
  643. Uniform Resource Locators                                   Berners-Lee
  644.  
  645.  
  646.  
  647.         News
  648.  
  649.             The news locators refer to either news group names or
  650.           article message identifiers which must conform to the rules of
  651.           RFC 850.  A message identifier may be distinguished from a
  652.           news group name by the presence of the commercial at "@"
  653.           character.   These rules imply that within an article, a
  654.           reference to a news group or to another article will be a
  655.           valid URL (in the partial form).
  656.             Note: An outstanding problem is that the message identifier
  657.           is insufficient to allow the retrieval of an expired article,
  658.           as no algorithm exists for deriving an archive site and
  659.           filename.  The addition of the date and news group set to the
  660.           article's URL would allow this if a directory existed of
  661.           archive sites by news group.  Suggested subject of study in
  662.           conjunction with NNTP WG.  Further extension possible may be
  663.           to allow the naming of subject threads as addressable objects.
  664.  
  665.         WAIS
  666.  
  667.             The current WAIS implementation public domain requires that
  668.           a client know the "type" and length of a object prior to
  669.           retrieval.  These values are returned along with the internal
  670.           object identifier in the search response.  They have been
  671.           encoded into the path part of the URL in order to make the URL
  672.           sufficient for the retrieval of the object.  If  changes to
  673.           WAIS specs make the internal id something which is sufficient
  674.           for later retrieval then this will not be necessary.
  675.             Within the WAIS world, names do not of course not need to be
  676.           prefixed by "wais:"  (by the partial form rules).
  677.  
  678.         Prospero
  679.  
  680.             The Prospero (Neuman, 1991) UDP-based virtual file system
  681.           protocol is used. The host and port parts are used, and
  682.           optional.  The significance of the path part may be the name
  683.           of a file, or anything else according to the server.  If the
  684.           path ends with a final slash "/" that indicates to the client
  685.           that the object is a directory to be listed.. Prospero links
  686.           of the form EXTERNAL are converted into URLs of non-prospero
  687.           naming schemes (such as "ftp:").
  688.             The path may, as well as the Prospero "Host Specific Object
  689.           Name"  (HSOName) have other following Prospero fields,
  690.           currently version and URN.  These are appended to the HSOName
  691.           and separated by the characters "%23" (percent, two, three),
  692.           this being the escaped form of the Prospero hash sign
  693.           delimiter.
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700. Internet Draft                     12                        March 1993
  701.  
  702. Uniform Resource Locators                                   Berners-Lee
  703.  
  704.  
  705.  
  706.         Gopher
  707.  
  708.             The first character of the URL path part (after the initial
  709.           single slash) is a single-character "type" field which is that
  710.           used by the Gopher protocol.  The rest of the path is the
  711.           "selector string", with unprintable characters and spaces
  712.           encoded.
  713.             Gopher links which refer to different protocols may be
  714.           converted into URLs for those protocols.
  715.  
  716.         Telnet, rlogin, tn3270
  717.  
  718.             The use of URLs to represent interactive sessions is a
  719.           convenient extension to their uses for objects.  This allows
  720.           access to information systems which only provide an
  721.           interactive service, and no information server.  As
  722.           information within the service cannot be addressed
  723.           individually or, in general, automatically retrieved, this is
  724.           a less desirable, though currently common, solution.
  725.  
  726.         x500
  727.  
  728.             The mapping of x500 names onto URLs is not defined here. A
  729.           decision is required as to whether "distinguished names" or
  730.           "user friendly names" (ufn), or both, should be allowed. If
  731.           any punctuation conversions are needed from the adopted x500
  732.           representation (such as the use of slashes between parts of a
  733.           ufn) they must be defined. This is a subject for study.
  734.  
  735.         WHOIS
  736.  
  737.             This prefix describes the access using the "whois++" scheme
  738.           in the process of definition. The hostname part is the same as
  739.           for other IP based schemes. The path part can be either a
  740.           whois handle for a whosi object, or it can be a valid whois
  741.           query string. This is a subject for further study.
  742.  
  743.         Network Management Database
  744.  
  745.             This is a subject for study.
  746.  
  747.  
  748.         Registration of naming schemes
  749.  
  750.             A new naming scheme may be introduced by defining a mapping
  751.           onto a conforming URL syntax, using a new scheme identifier.
  752.           Experimental scheme identifiers may be used by mutual
  753.           agreement between parties, and must start with the characters
  754.           "x-".
  755.             It is proposed that the Internet Assigned Numbers Authority
  756.           (IANA) perform the function of registration of new schemes.
  757.  
  758.  
  759. Internet Draft                     13                        March 1993
  760.  
  761. Uniform Resource Locators                                   Berners-Lee
  762.  
  763.  
  764.           Any submission of a new scheme must include a definition of an
  765.           algorithm for the retrieval of any object within that scheme.
  766.           The algorithm must take  the URL and produce either a set of
  767.           URL(s) which will lead to the desired object, or the object
  768.           itself, in a well-defined or determinable format. It is
  769.           recommended that those proposing a new scheme demonstrate its
  770.           utility and operability by the provision of a gateway which
  771.           will provide images of objects in the new scheme for clients
  772.           using an existing protocol.
  773.             It is likewise recommended that, where a protocol allows for
  774.           retrieval by URL, that the client software have provision for
  775.           being configured to use specific gateway locators for indirect
  776.           access through new naming schemes.
  777.  
  778.      BNF syntax
  779.  
  780.             This is a BNF-like description of the Uniform Resource
  781.           Locator syntax. A vertical  line "|"  indicates alternatives,
  782.           and [brackets]  indicate optional parts.  Spaces are
  783.           representational only: no spaces are actually allowed within a
  784.           URL.   Single letters stand for single letters. All words of
  785.           more than one letter below are entities described somewhere in
  786.           this description.
  787.  
  788.             anchoraddress  docaddress [ # anchorid ]
  789.             docaddress     generic | httpaddress | fileaddress |
  790.                            newsaddress | prosperoaddress | telnetaddress
  791.                            | gopheraddress | waisaddress | afsaddress
  792.             generic        scheme :  path [ ? search ]
  793.             scheme         ialpha
  794.             httpaddress    h t t p :   / / hostport  [  / path ] [ ?
  795.                            search ]
  796.             fileaddress    f t p : / / host / path
  797.             afsaddress     a f s : / / cellname / path
  798.             newsaddress    n e w s : groupart
  799.             waisaddress    waisindex | waisdoc
  800.             waisindex      w a i s : / / hostport / database [ ? search
  801.                            ]
  802.             waisdoc        w a i s : / / hostport / database / wtype /
  803.                            digits / path
  804.             groupart       * | group | article
  805.             group          ialpha [ . group ]
  806.             article        xalphas @ host
  807.             database       xalphas
  808.             wtype          xalphas
  809.             prosperoaddress   p r o s p e r o : / / path
  810.             telnetaddress  t e l n e t : / / [ user @ ] hostport
  811.             gopheraddress  g o p h e r : / / hostport  [/ gtype  [ /
  812.                            selector ] ] [ ? search ]
  813.             hostport        host [ : port ]
  814.             host           hostname | hostnumber
  815.             cellname       hostname
  816.  
  817.  
  818. Internet Draft                     14                        March 1993
  819.  
  820. Uniform Resource Locators                                   Berners-Lee
  821.  
  822.  
  823.             hostname       ialpha [  .  hostname ]
  824.             hostnumber     digits . digits . digits . digits
  825.             port           digits
  826.             selector       path
  827.             path           void |  xpalphas  [  / path ]
  828.             search         xalphas [ + search ]
  829.             user           xalphas
  830.             anchorid       xalphas
  831.             gtype          xalpha
  832.             xalpha         alpha | $ | - | _ | @ | ! | % | ^ | & | * |
  833.                            (  |  ) | . | digit
  834.             xalphas        xalpha [ xalphas ]
  835.             xpalpha        xalpha | +
  836.             xpalphas       xpalpha [ xpalpha ]
  837.             ialpha         alpha [ xalphas ]
  838.             alpha          a | b | c | d | e | f | g | h | i | j | k | l
  839.                            | m | n | o  | p | q | r | s | t | u | v | w
  840.                            | x | y | z | A | B | C  | D | E | F | G | H
  841.                            | I | J | K | L | M | N  | O | P |  Q | R | S
  842.                            | T | U | V | W | X | Y | Z
  843.             digit          0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  844.             digits         digit [ digits ]
  845.             alphanum       alpha | digit
  846.             alphanums      alphanum [ alphanums ]
  847.             void
  848.  
  849.  
  850.  
  851.      Security considerations
  852.  
  853.             The URL scheme does not in itself pose a security threat.
  854.           Users should beware that there is no general guarantee that a
  855.           URL which at one time points to a given object continues to do
  856.           so, and does not even at some later time point to a different
  857.           object due to the movement of objects on servers.
  858.  
  859.      Conclusion
  860.  
  861.             A need has been demonstrated, and a number of requirements
  862.           have been stated for uniform resource locators (URLs). A
  863.           scheme has been proposed which builds on existing conventions
  864.           to define a syntax for URLs.  Adoption of the scheme in
  865.           correspondence, standards and software will ease the use of
  866.           references to on-line information in a flexible way as the
  867.           coming information age arrives.
  868.  
  869.      Acknowledgements
  870.  
  871.             This paper builds on much discussion of these issues by many
  872.           people on the network.  The discussion was particularly
  873.           stimulated by articles by Clifford Lynch (1991), Brewster
  874.           Kahle (1991) and Wengyik Yeong (1991b). Contributions from
  875.  
  876.  
  877. Internet Draft                     15                        March 1993
  878.  
  879. Uniform Resource Locators                                   Berners-Lee
  880.  
  881.  
  882.           John Curran (NEARnet), Clifford Neuman (ISI) Ed Vielmetti
  883.           (MSEN) and later the IETF URL working group have been
  884.           incorporated into this issue of this paper.
  885.             The draft url4 was generated from url3 following discussion
  886.           and overall approval of the URL working group on 29 March
  887.           1993. The paper url3 had been generated from udi2 in the light
  888.           of discussion at the UDI BOF meeting at the Boston IETF in
  889.           July 1992.
  890.  
  891.      References
  892.  
  893.         Alberti, R., et.al.  (1991) "Notes on the Internet Gopher
  894.             Protocol" University of Minnesota, December 1991,
  895.             URL=file://boombox.micro.umn.edu/pub/gopher/gopher_protocol
  896.             . See also
  897.             URL=gopher://gopher.micro.umn.edu:70/00/Information%20About
  898.             %20Gopher/About%20Gopher
  899.         Berners-Lee, T., (1991) "HTTP as implemented in WWW",  CERN,
  900.             December 1991,
  901.             URL=file://info.cern.ch./pub/www/doc/http.txt
  902.         Davis, F, et  al., (1990) "WAIS Interface Protocol: Prototype
  903.             Functional Specification", Thinking Machines Corporation,
  904.             April 23, 1990
  905.             URL=file://quake.think.com/pub/wais/doc/protspec.txt
  906.         International Standards Organization, (1991) Information and
  907.             Documentation - Search and Retrieve Application Protocol
  908.             Specification for open Systems Interconnection, ISO-10163
  909.         Huitema, C., (1991) "Naming: strategies and techniques",
  910.             Computer Networks and ISDN Systems 23 (1991) 107-110.
  911.         Kahle, Brewster, (1991) "Document Identifiers,  or
  912.             International Standard Book Numbers for the Electronic
  913.             Age", URL=file://quake.think.com/pub/wais/doc/doc-ids.txt
  914.         Kantor, B., and Lapsley, P., (1986) "A proposed standard for
  915.             the stream-based transmission of news", Internet RFC-977,
  916.             February 1986. URL=file://nnsc.nsf.net/rfc/rfc977.txt
  917.         Lynch, C., Coallition for Networked Information: (1991)
  918.             "Workshop on ID and Reference Structures for Networked
  919.             Information", November 1991. See
  920.             URL=wais://quake.think.com/wais-discussion-archives?lynch
  921.         Mockapetris, P., (1987) "Domain names + concepts and
  922.             facilities", RFC-1034, USC-ISI, November 1987,
  923.             URL=file://nnsc.nsf.net/rfc/rfc1034.txt
  924.         Neuman, B. Clifford, (1992) "Prospero: A Tool for Organizing
  925.             Internet Resources", Electronic Networking: Research,
  926.             Applications and Policy, Vol 1 No 2, Meckler Westport CT
  927.             USA.  See also
  928.             URL=file://prospero.isi.edu/pub/prospero/oir.ps
  929.         Postel, J. and Reynolds, J. (1985)  "File Transfer Protocol
  930.             (FTP)", Internet RFC-959, October 1985.
  931.             URL=file://nnsc.nsf.net/rfc/rfc959.txt
  932.         Yeong, W., (1991a) "Towards Networked Information Retrieval",
  933.             Technical report 91-06-25-01, June 1991, Performance
  934.  
  935.  
  936. Internet Draft                     16                        March 1993
  937.  
  938. Uniform Resource Locators                                   Berners-Lee
  939.  
  940.  
  941.             Systems International, Inc.
  942.             URL=file://uu.psi.com/wp/nir.txt
  943.         Yeong, W., (1991b), "Representing Public Archives in the
  944.             Directory", Internet Draft, November 1991.  In
  945.             URL=wais://nnsc.nsf.net/internet-drafts?yeong
  946.  
  947.  
  948.         Author's address
  949.  
  950.  
  951.                Tim Berners-Lee
  952.                World-Wide Web project
  953.                CERN, 1211 Geneva 23, Switzerland
  954.                +41 (22)767 3755
  955.                timbl@info.cern.ch
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995. Internet Draft                     17                        March 1993
  996.  
  997.